public class Example29 {
    /*
    填空题
            1.抽象方法，抽象类。
            2.子类，父类，基类
            3.final
            4.Object
            5.参考数据，－＞，表达式主体。
      判断题
                1.×
                2.√
                3.×
                4.√
                5.√
      选择题
                1.B
                2.ABC
                3.C
                4.C
                5.A
      简答题
                1.在继承关系中,子类的方法与父类的某一方法具有相同的方法名、返回类型和参数列表
                则称子类的该方法重写 ( 覆盖 ) 父类的方法。
                2.在面向对象语言中，接口的多种不同的实现方式即为多态。在同一个方法中。这总由
                于参数类型不同而导致执行效果各异的现象
                3.在 Java 中,使用 abstract 关键字修饰的类称之为抽象类。 抽象类是不能被实
                例化的,通常需要写一个子类来继承抽象类,同时实例化子类来获得该类的对象。抽象类通常用于表示一种抽象的概念。 接口可以说是一种特殊的抽象类,接口中只能定义常量、抽象方法、静态方法和默认方法。由于接口的特殊性,在定义时需要使用 interface 关键字。

     */
    static class Student {
        public String name;
        public int age;

        public Student(String name, int age) {
            this.name = name;
            this.age = age;
        }

        public void show() {
            System.out.println("name: " + name);
            System.out.println("age: " + age);
        }
    }

    static class UnderGraduate extends Student {
        public String degree;

        public UnderGraduate(String name, int age, String degree) {
            super(name, age);
            this.degree = degree;
        }

        public void show() {
            System.out.println("name: " + name);
            System.out.println("age: " + age);
            System.out.println("degree: " + degree);
        }
    }

    //2.设计一个Shape接口和它的两个实现类Square和Circle

    interface Shape {
        double area(double givenValue);
    }
    static class Square implements Shape{
        public double area(double sideLength) {
            return sideLength*sideLength;
        }
    }
    static class Circle implements Shape{
        public double area(double r) {
            return Math.PI*r*r;
        }
    }

        public static void main(String[] args) {
            Shape square = new Square();
            Shape circle = new Circle();
            System.out.println(square.area(2));
            System.out.println(circle.area(3));

    }

}
